import numpy as np
import pandas as pd


# Series是一种类似于一维数组的对象
def test1():
    obj = pd.Series([4, 7, 5, -6])
    print(">>>>>> 类型: ", type(obj))
    print(">>>>>> ", obj)
    print(">>>>>> ", obj.values)
    print(">>>>>> ", obj.index)


def test2():
    obj = pd.Series([4, 7, 5, -6], index=['a', 'b', 'c', 'd'])
    print(obj)

    # 通过索引的方式选取Series中的单个或一组值
    print("", obj['d'])
    print("", obj[['a', 'd']])

    # 运算
    print("", obj[obj > 0])  # 布尔型数组进行过滤
    print("", obj * 2)  # 标量乘法
    print("", np.exp(obj))  # 应用数学函数


def test3():
    # 通过字典来创建Series，Series中的索引就是原字典的键（有序排列）
    sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    obj = pd.Series(sdata)
    print(obj)

    #
    states = ['California', 'Ohio', 'Oregon', 'Texas']
    obj = pd.Series(sdata, index=states)
    print(obj)

    #
    print("", pd.isnull(obj))
    print("", pd.notnull(obj))
    print("", obj.isnull())


# Series最重要的一个功能是，它会根据运算的索引标签自动对齐数据
def test4():
    sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    obj = pd.Series(sdata)
    print(obj + obj)


if __name__ == '__main__':
    # test1()
    # test2()
    # test3()
    test4()
